/////////////////////////////////////////////////////////////////////
//
//  MOE Framework (Meta Object Encapsulation Framework)
//
//  Original Author: Wiksy Wang, 2011
//
/////////////////////////////////////////////////////////////////////

#ifndef MOE_PERSIST_PERSIST_COMMON_H
#define MOE_PERSIST_PERSIST_COMMON_H

#include "../DataMemberMeta.h"

namespace MOE
{

namespace Persist
{

struct NameReadHandler
{
	NameReadHandler(void* data, const DataMemberMeta& member)
		: _data(data)
		, _member(member)
	{
	}

	void operator()(void* targetAddr) const
	{
		if (_member.HasDirectAccess())
		{
			*static_cast<void**>(_member.DirectAccess(_data)) = targetAddr;
		}
		else if (_member.HasSetter())
		{
			_member.Set(_data, &targetAddr);
		}
	}

	void* _data;
	const DataMemberMeta& _member;
};

}

}

#endif
